﻿//#include <stdio.h>
//
////字符串补充
////strlen  -- string length
//#include <string.h>
//
//int main()
//{
//	int len = strlen("abx");//abx\0，strlen求字符串的长度
//	printf("%d\n", len);
//	return 0;
//}


//int main()
//{
//	int len = strlen("c:\test\class111\123.c");
//
//	printf("%d\n", len);
//
//	return 0;
//}

//注释的特别用法
//int main()
//{
//	//类似于空格，但不可以随便乱加。
//	int /*xxxx*/num = 10;
//	return 0;
//}

//数据类型bool类型例子,布尔类型使用需要包含<stdbool.h>
//取值是true或false
//#include <stdio.h>
//#include <stdbool.h>
//
//int main()
//{
//	_Bool flag = true;
//	if (flag)
//		printf("I like C\n");
//
//	return 0;
//}



//signed和unsigned的区分
//C 语⾔使⽤ signed 和 unsigned 关键字修饰字符型和整型类型的。
//signed 关键字，表⽰⼀个类型带有正负号，包含负值；
//unsigned 关键字，表⽰该类型不带有正负号，只能表⽰零和正整数。
//#include <stdio.h>
//int main()
//{
//	int num;//默认是带由正负号的，也就是说int等同于signed int。
//	int temperaturel = 30;
//	int temperature2 = -30;
//
//	//int也可以不带正负号，但只表示非负整数时，就必须使用关键字unsigned声明变量。
//	unsigned int age = 20;
//
//	return 0;
//}



//补充：sizeof的用法
//char short int long 
//long long 

//sizeof 是一个操作符
//计算的是变量所占的内存的大小，单位是字节
//计算的是类型创建的变量所占内存的大小，单位是字节。

//size_t - 是专门为sizeof设置的一个类型
//size_t 的本质是unsigned int
//size_t 类型的数据打印的时候，格式应该使用%zd

//#include <stdio.h>
//
//int main()
//{
//	printf("%d\n", sizeof(char));
//	printf("%d\n", sizeof(short));
//	printf("%d\n", sizeof(int));
//	printf("%d\n", sizeof(long));
//	printf("%d\n", sizeof(long long));
//	printf("%d\n", sizeof(float));
//	printf("%d\n", sizeof(double));
//	return 0;
//}


//C语言标准规定：
//sizeof(long)>=sizeof(int)




//变量的创建数据类型 变量名
//#include <stdio.h>
//
//int main()
//{
//	//int weight;
//	//char ch;
//	//float score;
//	//short age;
//
//
//	//变量的初始化，创建变量时给一个值
//	int weight = 59;
//	char ch = 'h';
//	float score = 98.61f;//这里加入f,使其识别为float类型，防止报错。
//	short age = 20;
//	return 0;
//}


//全局变量

//#include <stdio.h>
//
//int g_val = 2023;//全局变量
//
//int main()
//{
//	int a = 0;
//	{
//		int b = 10;
//		printf("%d\n", b);//局部变量，只能在局部范围使用，出了范围就不可用了。
//		printf("g_val1=%d\n", g_val);
//	}
//	printf("g_val2=%d\n", g_val);//全局变量，想使用都可以使用
//	return 0;
//}


//#include <stdio.h>
//
//int a = 10;
//
//int main()
//{
//	{
//		int a = 20;
//		printf("%d\n", a);//打印20；//变量名相同时，相对于更加局部的变量优先使用。
//	}
//	printf("%d\n", a);//打印10;
//	return 0;
//}


//算术操作符：：+、-、*、/、% 的使用

//加减操作符的使用实例
//+ 和 - 都是有2个操作数的，位于操作符两端的就是它们的操作数，
//这种操作符也叫双⽬操作符

//#include <stdio.h>
//
//int main()
//{
//	int num1 = 3 + 7;
//	printf("%d\n", num1);
//	int num2 = 3 - 7;
//	printf("%d\n", num2);
//				//10 - 4
//	int sum = num1 + num2;
//	printf("%d\n", sum);
//	return 0;
//}

//* 号完成乘法运算
//实例
//#include  <stdio.h>
//
//int main()
//{
//	int n = 5;
//	printf("%d\n", n * n);
//
//	return 0;
//}



//运算符/用来完成除法运算
//除号的两端如果是整数，执行的是整数除法，得到的结果也是整数。
//如果有一端是小数就执行小数运算

//实例1
//#include <stdio.h>
//
//int main()
//{
//	//int a = 10 / 4;  //10/4=2...2
//	float a = 10 / 4.0f;//要得到2.5我可以这样做
//	printf("a=%f\n", a);
//	return 0;
//}



//实例2
//#include <stdio.h>
//
//int main()
//{
//	int n = 5;
//	//n = (n / 20) * 100;
//	//printf("%d\n", n);//输出结果是0
//	n = (n / 20.0) * 100;
//	printf("%d\n", n);//输出结果是25
//	return 0;
//}



//运算符 % 表⽰求模运算，即返回两个整数相除的余值。
//这个运算符只能⽤于整数，不能⽤于浮点数

//实例
//#include <stdio.h>
//
//int main()
//{
//	int a = 7 / 2;//商
//	int b = 7 % 2;//%取模(取余)得到的是整除后的余数
//	printf("a=%d\n", a);
//	printf("a=%d\n", b);
//	return 0;
//}


//负数求模的规则是，结果的正负号由第⼀个运算数的正负号决定
//实例

//#include <stdio.h>
//int main()
//{
//	printf("%d\n", 11 % -5); // 1
//	printf("%d\n", -11 % -5); // -1
//	printf("%d\n", -11 % 5); // -1
//	return 0;
//}



//赋值操作符
//在变量创建的时候给⼀个初始值叫初始化，在变量创建好后，再给⼀个值，这叫赋值。
//#include <stdio.h>
//
//int main()
//{
//	int a = 0;//初始化
//	a = 10;//赋值， = 赋值操作符
//	return 0;
//}

//连续赋值
//C语⾔虽然⽀持这种连续赋值，但是写出的代码不容易理解，
//建议还是拆开来写，这样⽅便观察代码的执⾏细节

//#include <stdio.h>
//
//int main()
//{
//	int a = 3;
//	int b = 5;
//	int c = 0;
//	c = b = a + 3;//连续赋值，从右向左依次赋值的
//	return 0;
//}


//复合赋值

//#include <stdio.h>
//
//int main()
//{
//	int a = 3;
//	a = a + 10;
//	a += 10;//复合赋值
//	a = a - 4;
//	a -= 4;//复合赋值
//	printf("%d\n", a);
//	return 0;
//}



//单目操作符：++、--、+（正号）、-（负号）

//++和--
//++是⼀种⾃增的操作符，⼜分为前置++和后置++，
//--是⼀种⾃减的操作符，也分为前置--和后置--.

//++ --> 自增1的运算

//#include <stdio.h>
//int main()
//{
//	int a = 5;
//	//a = a + 1;
//	//a += 1;
//	//a++;
//	//++a;
//	printf("a=%d\n", a);
//	return 0;
//}


//前置++和后置++的区别
//放在表发达式中才能观察

////前置++
////计算口诀：先++，后使用
//#include <stdio.h>
//
//int main()
//{
//	int a = 5;
//	int b = ++a;
//  //a=a+1;b=a;
//
//	printf("a=%d\n", a);//6
//	printf("b=%d\n", b);//6
//	return 0;
//}



//后置++
//计算口诀：先使用，再++
//#include <stdio.h>
//
//int main()
//{
//	int a = 5;
//	int b = a++;
//	//b=a;a=a+1;
//
//	printf("a=%d\n", a);//6
//	printf("b=%d\n", b);//5
//	return 0;
//}

//前置--
//计算口诀：先--，后使用
//#include <stdio.h>
//
//int main()
//{
//	int a = 5;
//	int b = --a;
//	//a=a-1;b=a;
//	
//	printf("a=%d\n", a);//4
//	printf("b=%d\n", b);//4
//	return 0;
//}


//后置--
//计算口诀：先使用，再--
//#include <stdio.h>
//
//int main()
//{
//	int a = 5;
//	int b = a--;
//	//b=a;a=a-1;
//
//	printf("a=%d\n", a);//4
//	printf("b=%d\n", b);//5
//	return 0;
//}

//+（正号和 -（负号）
//#include <stdio.h>
//
//int main()
//{
//	int a = -10;
//	int b = a;
//	printf("%d\n", b);
//
//	return 0;
//}


//强制类型装换
#include <stdio.h>

int main()
{
	int a = (int)3.14;//double,把double类型的3.14，强制转换为int类型，消除警告
	printf("%d\n", a);
	return 0;
}